public class ClassRoom implements Runnable {
    Thread student1,student2,teacher;
    ClassRoom(){
        teacher=new Thread(this);
        student1=new Thread(this);
        student2=new Thread(this);
        teacher.setName ("王教授");
        student1.setName ("张三");
        student2.setName ("李四");
    }
    public void run () {
        if(Thread.currentThread()==student1) {
            try{ System.out.println(student1.getName()+"正在睡觉，不听课");
                Thread.sleep(1000*60*10);
            }
            catch (InterruptedException e){
                System.out.println(student1 .getName()+" 被"+teacher.getName()+"叫醒了");
            }
            System.out.println(student1.getName()+"开始听课"); student2.interrupt();}
        else if(Thread.currentThread()==student2) {
            try {
                System.out.println(student2.getName() + "正在睡觉，不听课");
                Thread.sleep(1000 * 60 * 60);
            } catch (InterruptedException e) {
                System.out.println
                        (student2.getName() + "被" + student1.getName() + "叫醒了");
            }
            System.out.println(student2.getName() + "开始听课");
        }
        else if (Thread.currentThread() == teacher) {
                for (int i = 1; i <= 3; i++) {
                    System.out.println("上课!");
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {}
                }
                student1.interrupt();
            }
        }
    }